﻿using System;
using biz.ritter.javapi.lang.reflect;
using biz.ritter.javapi.util;

namespace Nofs.Net.Common.Interfaces.Domain
{
    public interface IFileObjectFactory
    {
        IFileObject BuildFileObject(String parentPath, Object obj); // throws Exception;
        IFileObject BuildFileObject(String parentPath, Object obj, Method method); // throws Exception;
        IFileObjectStat BuildStat(Object obj); // throws Exception;
        IFileObjectStat BuildStat(Object obj, Method method); // throws Exception;

        Collection<String> GetChildNames(Object parent); // throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, Exception;
        Collection<String> GetChildNames(Object methodObj, Method parentMethod); // throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, Exception;
        Object GetChildWithName(Object methodObj, Method parentMethod, String name); // throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, Exception;
        Object GetChildWithName(Object parent, String name); // throws Exception;
    }
}
